#pragma once
#include "libglew/glew.h"
#include <iostream>
#include <string>
#include <sstream>
#ifdef WIN32
#include <GL/glut.h>
#endif
#ifdef __APPLE__
#include <GLUT/glut.h>
#define MAC_TIGER
#endif
#include "FCollada.h"
#include "FCDocument/FCDocument.h"
#include "FCDocument/FCDAsset.h"
#include "FCDocument/FCDEffect.h"
#include "FCDocument/FCDEffectProfileFX.h"
#include "FCDocument/FCDEffectParameter.h"
#include "FCDocument/FCDEffectParameterList.h"
#include "FCDocument/FCDEffectParameterSurface.h"
#include "FCDocument/FCDEffectPass.h"
#include "FCDocument/FCDEffectPassShader.h"
#include "FCDocument/FCDEffectPassState.h"
#include "FCDocument/FCDEffectCode.h"
#include "FCDocument/FCDEffectStandard.h"
#include "FCDocument/FCDEffectTechnique.h"
#include "FCDocument/FCDLibrary.h"
#include "FUtils/FUFileManager.h"
#include "GLSLShaderProgram.h"
#include "GLSLShaderProxySingleton.h"

namespace lib3dw
{
	class ColladaGLSLShaderData
	{
		// Allow a model to access certain ColladaGLSLShaderData members
		friend class ColladaModel;
		
		public:
			ColladaGLSLShaderData(FCDocument* colladaDocument);
			~ColladaGLSLShaderData();

		protected:
			std::vector<GLuint> shaderPasses; 
			std::vector<GLuint>::const_iterator shaderPassIterator;

		private:
			void ProcessEffectLibrary(FCDEffectLibrary* library);
	};
}